43 DEFINT A-Z:CLS ':GOSUB 60200:IF MC>0 THEN DEF SEG=MC::PO=(&H64+PEEK(&H58)+256*PEEK(&H59)+&HC):IF PEEK(PO)=&H1 OR &H2 THEN POKE(PO),&H9 'remove ' for mlink
118 OPEN "I",#1,CA$:INPUT #1,FA$,RA$,PB$,PC$,NA$,NB$,CB,AA,AB,TV!,ME,LA,UB$,XPR,BC,BA,PRT,CE,MF$,MG$,MH$,MI$,MJ$,CQ$,CQ,OA,UE,PL,LW,GA,WA,MK$:INPUT#1,MES$,MN$,CF$,CG$,UF$,LB$,WB$,ND$,DIR$,CP$,OB,SD,TX$,DA,FGR,BGR,BDR,RC$,CH$,OC$,OD$
181 GET 2,CDX:IF LEFT$(CL$,13) = STRING$(13,CHR$(0)) THEN CDX=CDX-1
187 IF LH THEN GOSUB 480:LPRINT:LPRINT"RBBS-PC Version ";VA$;" up at "TIM$+TH$+DATE$:GOSUB 50500
200 IF INP(MSR)>127 THEN OPEN CP$+T5$ AS 3:GOSUB 44000:GOTO 440 ELSE OUT MCR,&H4:CLOSE 3:GOSUB 50500
201 OPEN CP$+TN$ AS #3:PRINT#3,"ATZ":GOSUB 50510:IF SD THEN MB$="M1" ELSE MB$="M0
220 IF CB >0 THEN PRINT#3,"ATS2=255Q1S0=255S10=20";MB$ ELSE PRINT#3,"ATS2=255Q1S10=20";MB$
221 GOSUB 480:PRINT:PRINT"RBBS-PC ready for calls at "TIM$+TH$+DATE$:PRINT:PRINT"<< Screen clears to prevent display burn-in. >>":PRINT:IF NOT PRT THEN LOCATE,,0
235 TCA!=FNTI!:GOSUB 49000
239 RB!=0:IF CB>0 THEN RB!=FNTI!:COLOR 7,0,0 ELSE COLOR FGR,BGR,BDR
400 A1$="What is your ":GOSUB 12500:IF TEX THEN I=1:GOTO 10620
440 IF FE$=PB$AND LK$=PC$THEN CI$="REMOTE":GOTO 470
445 IF INSTR(NAM$,"SYSOP") OR INSTR(NAM$,NA$+TB$+NB$) THEN I=1:GOTO 10620
455 FOR J=1 TO LEN(NAM$):X=ASC(MID$(NAM$,J,1)):IF(X<65 OR X>90)AND(X<>32 AND X<>39 AND X<>45 AND X<>46)THEN 400
465 NEXT:GOTO 500
470 FE$=NA$:LK$=NB$:NAM$="SYSOP":UG=SE:SH=-1:PRT=TBA:MQ=72:GOSUB 480:IF LJ THEN SG=FD:GOSUB 15010:GOTO 830 ELSE 830
480 TI$=TIME$:D$=LEFT$(DATE$,6)+RIGHT$(DATE$,2)
482 TIM$=TIME$:IF VAL(LEFT$(TIM$,2))=12 THEN MID$(TIM$,1,2)=RIGHT$(STR$(VAL(LEFT$(TIM$,2))),2):TIM$=LEFT$(TIM$,5)+" PM":RETURN
483 IF VAL(LEFT$(TIM$,2))>11 THEN MID$(TIM$,1,2)=RIGHT$(STR$(VAL(LEFT$(TIM$,2))-12),2):TIM$=LEFT$(TIM$,5)+" PM":RETURN ELSE TIM$=LEFT$(TIM$,5)+" AM":RETURN
500 GET 1,1:IF NAM$=MID$(R$,21,LEN(NAM$))THEN LL=-1:A$="Welcome back, "+FE$+".":GOSUB 1400
540 TEA$=NAM$:GOSUB 12600:IF NOT FG THEN 700 ELSE UG=CVI(SL$):IF UG<MO THEN I=3:GOTO 10620 ELSE UIX#=LOC(2):CI$=CS$:I=0:MR=4:KEE$=PW$:MES=0:IF Q=3 THEN Z$=B$(3):TDA=1:GOSUB 677 ELSE GOSUB 675
630 IF PF THEN I=4:GOTO 10620
643 IF UG>=SE THEN GOSUB 1400:A$="You have SYSOP privileges":CR=2:GOSUB 1400 ELSE GOSUB 41070
645 NF=0:LM$=FNDC$(FNUD$(LND$)):IF MID$(LM$,3,1)=TB$ THEN MID$(LM$,3,1)="0
655 IF MID$(LM$,5,1)=TB$ THEN MID$(LM$,5,1)="0
660 GOTO 800
665 IF KEE$=PW$ THEN PF=0:RETURN
667 TDA=0
670 TDA=TDA+1:IF TDA>MR THEN PF=-1:RETURN
675 A$=P$+" (dots will echo)":GOSUB 45010:Z$=B$(1)
677 GOSUB 5000:Z$=Z$+SPACE$(15-LEN(Z$)):IF KEE$=Z$ THEN PF=0:RETURN
680 IF MES THEN A$="Sorry, wrong password":GOSUB 1400:GOTO 670 ELSE 670
700 NF=-1:GOSUB 12630:UG=DB: IF UG < MO THEN I=3:GOTO 10620
710 A1$=" are you calling from":GOSUB 12950:A$=NAM$+" from "+Z$:GOSUB 1400:LSET CS$=Z$:CI$=Z$+TC$:A$="Is this correct":GOSUB 1500:GOSUB 1400:IF NOT YES THEN 400
755 GOSUB 12800:A$="Type PASSWORD again for double check":GOSUB 45010:SWAP Z$,B$(1):GOSUB 5000:IF B$(1)<>Z$THEN A$=P$+"s don't match!":GOSUB 1400:GOTO 755
760 GOSUB 5000:LSET PW$=Z$:GOSUB 1400:A$=FE$+", your password is needed to logon again.":CR=2:GOSUB 1400:LSET N$=NAM$:TFA=UG:GOSUB 12900
800 HUG=UG:GOSUB 1400:A$="Logging "+NAM$+" to disk...":GOSUB 1400:TGA=CVI(MID$(OP$,1,2))+1:LO=CVI(MID$(OP$,3,2)):LF=CVI(MID$(OP$,5,2)):MQ=CVI(MID$(OP$,7,2)):BA=CVI(MID$(OP$,9,2)):XPR=CVI(MID$(OP$,11,2)):PL=ASC(MID$(OP$,13))
802 IF D$<>LEFT$(TD$,8) THEN ET=0 ELSE ET=CVI(ET$)
805 DLD=CVI(UDL$):ULD=CVI(UUL$):IF LO>LE THEN LO=0
815 LSET OP$=MKI$(TGA)+MID$(OP$,3):LSET TD$=D$+TB$+TI$:PUT 2,UIX#:IF NOT NF THEN A$="You have signed on"+STR$(TGA)+" times.":CR=2:GOSUB 1400
817 IF UE THEN A$="You have downloaded"+STR$(DLD)+" files & uploaded"+STR$(ULD)+" files":CR=2:GOSUB 1400
825 JJ=INSTR(CI$,TC$):CI$=LEFT$(CI$,(JJ-1))
830 IF UG<>DB THEN Z$=TA$:Z=0:GOSUB 5140:IF FG THEN TV!=TJA
835 IF LJ THEN 843:IF BE THEN PE$="N,8,1" ELSE PE$="E,7,1
837 Z$=NAM$+" on at "+D$+", "+TIM$+" from "+CI$+", "+BF$+PE$:NG$=Z$+SPACE$(128-LEN(Z$))
841 IF LH THEN LPRINT TC$+Z$
843 TV!=(TV!+DAY*ET)*60:IF TV!<0 THEN A$="Daily time limit exceeded! Try tomorrow.":GOSUB 1400:GOTO 10698
844 GET 1,1:CJ=VAL(MID$(R$,11,10))+1:IF NOT SH THEN MID$(R$,21,31)=NAM$+SPACE$(31-LEN(NAM$)):MID$(R$,11,10)=STR$(CJ):PUT 1,1:IF UG>=SE THEN SH=-1
845 IF LL THEN 948
850 GOSUB 950:IF BC<1 THEN A$="Sorry, "+FE$+TI1$:GOSUB 1400:GOTO 900
851 IF SH THEN 900
855 IF OB THEN A$=FE$+", there are "+STR$(BC)+" bulletins today. Skip them":GOSUB 1500:IF YES THEN 900
1500 GOSUB 42000:A!=FRE("A"):THA!=FNTI!:A=0:B=0:C=0:Q=1:EOL=0:YES=0:B$=TA$:NO=0:A$=A$+"? ":CR=1:GOSUB 1400:IF LJ THEN LINE INPUT"",B$:GOTO 1575 ELSE IF BA THEN PRINT#3,BA$;
1525 WHILE EOF(3):GOSUB 42000:MMM!=FNTI!-THA!:IF MMM!>TY!THEN 10595
1530 Y$=INKEY$:FK$=Y$:GOSUB 60000
1531 IF Y$<>TA$ THEN 1545
1535 WEND:IF INP(MSR)<128 THEN 10595
1540 Y$=INPUT$(1,3):IF Y$=CHR$(127)THEN 1635
1545 IF Y$=BK2$ OR Y$=BA$ THEN 1635
1550 IF Y$<TB$ AND Y$<>CR$THEN 1525
1555 IF PRT THEN PRINT Y$;
1557 IF NOT SI THEN PRINT#3,Y$; ELSE PRINT#3,".";
1560 IF Y$=CR$THEN 1570
1563 IF LEN(B$)=>254 THEN A$="Input too long!":GOSUB 1400:GOTO 1500
1565 B$=B$+Y$:GOTO 1525
1570 IF LF THEN PRINT#3,LF$;
1575 A=INSTR(B$,";"):IF A=0 THEN 1620
1580 B$(1)=LEFT$(B$,A-1):A=A+1
1585 B=INSTR(A,B$,";"):C=B-A:IF C<1 THEN EOL=-1:C=128
1595 BB$=MID$(B$,A,C):IF BB$<>TA$ THEN Q=Q+1:B$(Q)=BB$
1605 IF NOT EOL AND Q<10 THEN A=B+1:GOTO 1585
1610 IF LEN(B$)>64 THEN A$="Try again, "+FE$+".":GOSUB 1400:GOTO 1500 ELSE 1625
1620 B$(1)=B$:Q=1:IF B$=TA$ THEN Q=0:RETURN
1625 SWAP Z$,B$:GOSUB 5000:SWAP Z$,B$:IF LEFT$(B$,1)="Y" THEN YES=-1 ELSE IF LEFT$(B$,1)="N" THEN NO=-1
1628 IF B$(Q)="NS" OR B$(Q)="ns" THEN NO=0:NH=-1:B$(Q)=TA$:IF Q>1 THEN Q=Q-1
1629 IF B$="RE" THEN RE=-1 ELSE IF B$="K" THEN KB=-1
1630 RETURN
1635 IF LEN(B$)=0 THEN 1525
1640 B$=LEFT$(B$,LEN(B$)-1):IF PRT THEN PRINT BK1$;
1650 PRINT#3,BK$;:GOTO 1525
1654 R1=INP(LCR):K2=INP(MSB):OUT MSB,0:OUT LCR,R1 OR 128:IF Q=384 THEN OUT LSB,&H80:OUT MSB,&H1:GOTO 1684
1662 IF Q=256 THEN OUT LSB,&H0:OUT MSB,&H1:GOTO 1684
1664 IF Q=96 THEN OUT LSB,&H60:OUT MSB,&H0
1684 OUT LCR,R1:OUT MSB,K2:RETURN
1700 F$=HE2$:GOTO 1790
1720 IF BC<1 THEN A$="Sorry, "+FE$+TI1$:GOTO 2210
1730 F$=BUL$(0):EC=0:GOSUB 1790:IF EC<>53 THEN GOSUB 9710
1735 RETURN
1740 F$=HE1$:GOTO 1790
1760 F$=WB$:GOTO 1790
1780 F$=HE8$
1790 GOSUB 43030:GOSUB 6000:RETURN
1800 GOSUB 1400:A$="Comments are readable by Sysop only, Do you wish to leave a comment":GOSUB 1500:MQ=72:IF NOT YES THEN A$="No comment.":GOTO 2210
1840 T$="SYSOP":SUB$="COMMENT":SC=TBA:GOTO 2007
1900 IF LJ THEN RETURN
1910 GOSUB 50510:OUT MCR,INP(MCR) AND 254:GOSUB 50500:OUT MCR,INP(MCR) OR 1:RETURN
1940 CLOSE 2:OPEN "A",2,CG$:GOSUB 1400:A$="Thanks for the comments, "+FE$+" !":GOSUB 1400:GOSUB 482:PRINT#2,NAM$,D$,TIM$:FOR X=1 TO LI:PRINT#2,A$(X):NEXT:FOR X=1 TO 2:PRINT#2,CR$:NEXT:CLOSE 2:RETURN
2000 GOSUB 1400:IF LC=ME THEN A$="Too many active messages -- try tomorrow.":GOSUB 1400:GOTO 3650
2006 PAS$=TA$:SC=FD:IF NOT RE THEN T$=TA$
2007 IF SC THEN F$="COMMENT" ELSE F$="MESSAGE
2008 Z$=MES$:GOSUB 52000:IF VAL(AD$)<2000 THEN A$="Not enough room for "+F$+"!":GOSUB 1400:GOTO 3650
2010 LI=0:L=0:X=0:FOR I=1 TO 30:A$(I)=TA$:NEXT:IF SC THEN 2100
2015 A$="Message will be # "+STR$(LE+1):GOSUB 1400:IF RE THEN 2050
2020 A$="To (C/R For All)":GOSUB 1500:IF LEN(B$(1))>30 THEN A$="30"+TM$:GOSUB 1400:GOTO 2020
2030 IF Q=0 THEN T$=TP$ ELSE Z$=B$(1):GOSUB 5000:T$=Z$
2035 A$="Subject":GOSUB 1500:IF LEN(B$(1))>25 THEN A$="25"+TM$:GOSUB 1400:GOTO 2035
2045 IF Q=0 THEN 20095 ELSE Z$=B$(1):GOSUB 5000:SUB$=Z$
2075 IF T$=TP$ THEN A$="MESSAGE CANNOT BE PROTECTED":GOSUB 1400:GOTO 2050
2084 PAS$=TU$:GOTO 2100
2085 A$=P$:GOSUB 1500:IF Q=0 THEN 2085 ELSE IF LEN(B$(1))>L THEN A$=STR$(L)+" Chars. max.":GOSUB 1400:GOTO 2085 ELSE IF L=15 AND MID$(B$(1),1,1)="!" THEN A$=P$+" can't begin with '!'":GOSUB 1400:GOTO 2085 ELSE RETURN
2088 A$="Callers must KNOW PASSWORD TO READ message. Is this what you want":GOSUB 1500: IF NO THEN 2070 ELSE L=14:A1$="!":GOTO 2092
2090 L=15:A1$="
2092 GOSUB 2085:Z$=B$(1):GOSUB 5000:PAS$=A1$+Z$
2100 GOSUB 1400:IF NOT XPR THEN A$="To enter message, type in text.":GOSUB 1400:A$="<C/R> to end (19 lines max.).":GOSUB 1400
2120 GOSUB 3200
2125 LI=LI+1:A$=RIGHT$(STR$(LI),2)+": "+A$(LI):CR=1:GOSUB 1400:GOSUB 3700:IF A$(LI)=TA$ THEN LI=LI-1:GOTO 2300
2140 J=LI:GOSUB 2200:IF X THEN 2300 ELSE 2125
2200 X=0:IF J<17 OR SH THEN RETURN ELSE IF J=17 THEN A$="Two lines left..." ELSE IF J=18 THEN A$="Last line" ELSE A$="Message full.":X=-1
2325 IF Q>1 AND Z$<>"M"THEN L=VAL(B$(Q)):GOSUB 3320
2330 ON INSTR("ACDEILMS?",Z$) GOTO 2400,2340,2500,2600,2800,3000,3100,3400,2345:GOTO 2300
2340 GOSUB 3200:GOTO 2140
2345 F$=HE4$:GOSUB 1790:GOTO 2315
2400 GOSUB 1400:A$="Abort message":GOSUB 1500:IF NOT YES THEN 2300
2430 GOSUB 1400:A$="Aborted":GOSUB 1400:GOTO 3650
2500 GOSUB 1400:IF Q=1 THEN A$="Delete ":CR=1:GOSUB 1400:GOSUB 3300
2520 A$="Line #"+STR$(L):GOSUB 1400:A$=A$(L):CR=2:GOSUB 1400:A$="Delete this line":GOSUB 1500:IF NOT YES THEN A$="Line #"+STR$(L)+" NOT Deleted.":GOSUB 1400:GOTO 2300
2550 LI=LI-1:FOR X=L TO LI:A$(X)=A$(X+1):NEXT:A$(LI+1)=TA$:A$="Line #"+STR$(L)+" Deleted.":GOSUB 1400:GOTO 2300
2600 GOSUB 1400:IF Q=1 THEN GOSUB 3300
2620 A$="Line #"+STR$(L)+" is:":GOSUB 1400:A$=A$(L):CR=2:GOSUB 1400:A$="Enter <Oldstring;Newstring> or C/R for no change.":GOSUB 1400:GOSUB 1400:B$(2)=TA$:GOSUB 1500:IF Q=0 THEN 2300
2660 X=INSTR(1,A$(L),B$(1)):IF X=0 THEN 2710
2670 LB1=LEN(B$(1)):LB2=LEN(B$(2)):IF LB1=LB2 THEN MID$(A$(L),X)=B$(2):GOTO 2620
3340 A$="No such line, "+FE$+".":GOSUB 1400:RETURN 2300
3400 IF SC THEN 1940
3410 GOSUB 1400:A$="Updating Message file.":CR=1:GOSUB 1400:X#=0:REC=0:N$=TA$:LE=LE+1:LC=LC+1:MT$=STR$(LE)+SPACE$(5-LEN(STR$(LE))):IF PAS$=TU$ THEN MID$(MT$,1,1)="*
3460 FI$=NAM$+SPACE$(31-LEN(NAM$)):T$=T$+SPACE$(31-LEN(T$)):MID$(T$,23,8)=TIME$:SUB$=SUB$+SPACE$(25-LEN(SUB$)):PAS$=PAS$+SPACE$(15-LEN(PAS$)):FOR J=1 TO LI:A$(J)=A$(J)+CHR$(227):REC=REC+LEN(A$(J)):NEXT
3510 IF REC MOD 128=0 THEN N$=STR$(REC\128+1) ELSE N$=STR$(REC\128+2)
4416 IF INSTR("Mm",B$(L)) THEN MU=-1:GOTO 4370 ELSE IF MM=0 THEN 20095 ELSE GOSUB 1400
4430 IF RIGHT$(B$(L),1)="+"THEN FOW=-1 ELSE IF RIGHT$(B$(L),1)="-"THEN REV=-1:GOTO 4490
4450 FOR R=1 TO LC:IF RT AND M(R,2)=MM THEN 4520
4470 IF((RT AND FOW)OR QU OR SU)AND M(R,2)=>MM THEN 4520
4480 NEXT:GOTO 4515
4490 FOR R=LC TO 1 STEP-1:IF M(R,2)<=MM THEN 4540
4510 NEXT
4515 GOSUB 3965:GOTO 4370
4520 QQQ=R:IF RT AND NOT FOW THEN 4560
4530 QQ=R:QQQ=LC:QA=1:GOTO 4550
4540 QQ=R:QQQ=1:QA=-1
4550 FOR R=QQ TO QQQ STEP QA
4560 GET 1,M(R,1):PF=0:UH=0:Z$=MID$(R$,101,15):IF INSTR(R$,NAM$)>0 THEN UH=-1
4561 IF NOT SH THEN IF INSTR(R$,TU$)>0 AND NOT UH THEN PF=-1:IF FOW OR REV THEN 4635
4562 MM=VAL(MID$(R$,2,4)):IF MU AND NOT UH THEN 4625
4580 IF INSTR(R$,SC$)=0 THEN 4635
4581 IF MID$(R$,116,1)=CHR$(226) THEN 4625
4582 PG=0:IF MID$(Z$,1,1)="!" THEN IF NOT SH THEN PG=-1:KEE$=MID$(Z$,2)+" ":MR=0:GOSUB 665
4584 IF PF AND (QU OR (SU AND NOT PG)) THEN 4635
4585 IF PF THEN IF PG THEN SJ$="<PASSWORD>" ELSE SJ$="<PROTECTED>" ELSE SJ$=MID$(R$,76,25)
4590 IF QU THEN Z$=LEFT$(R$,5)+TB$+SJ$:Z=31:GOSUB 8100:A$=Z$:GOSUB 1400:GOTO 4630
4600 GOSUB 8000:IF SU OR RET THEN 4630 ELSE IF M(R,2)>LO THEN LO=M(R,2)
4610 IF NOT PF THEN 4613 ELSE IF PG THEN MR=2:GOSUB 667
4611 IF PF THEN GOSUB 4670:GOSUB 1400:GOTO 4625
4613 GOSUB 9000:GOSUB 1400:IF Q AND PL<>0 THEN 62500
4625 IF NOT FOW AND NOT REV THEN 4370
4630 IF PL=0 THEN 4631 ELSE Q=Q+QAH:IF Q<PL THEN 4631 ELSE GOSUB 5600:IF NO THEN Q=0:GOTO 4650 ELSE Q=QAH
4631 IF RET THEN 20095
4635 NEXT:IF RT THEN 4370
4650 GOSUB 1400:A$="End of Msgs.":GOTO 2220
4670 GOSUB 1400:A$="Sorry, "+FE$+", msg # "+LEFT$(R$,5)+" is protected.":GOTO 2210
4700 IF NOT AVA GOTO 4708
4705 GOSUB 1400:A$="Chat... Remote Conversation Utility.":CR=2:GOSUB 1400:TIA=VAL(MID$(TIME$,1,2))*100+VAL(MID$(TIME$,4,2)):IF(TIA>AA AND TIA<AB)OR AC THEN 4710
4707 GOTO 4750
4708 A$=NA$+TG$+STR$(AA)+" and"+STR$(AB)+",":GOSUB 1400:A$="but is temporarily away, "+FE$:GOSUB 1400:GOTO 4755
4710 A$="Return is to main menu in":GOSUB 1400:A$="30 sec. if SYSOP unavailable.":CR=2:GOSUB 1400:K=0:A$="Paging SYSOP now...":CR=1:GOSUB 1400:IA!=FNTI!+30
4750 A$="Sorry "+FE$+", "+NA$+TG$+STR$(AA)+" and "+STR$(AB)+",":GOSUB 1400
4755 A$="Please leave a message or comment.":Z$=SPACE$(5)+"Operator paged at "+LEFT$(TIME$,5):GOSUB 5538:GOTO 2210
4765 GOSUB 1400:A$="SYSOP available! Go ahead...":CR=2:GOSUB 1400
4770 CM=TBA:GOSUB 49000
4775 WHILE EOF(3):A$=INKEY$:FK$=A$:GOSUB 60000
4776 IF A$=BK2$ OR A$=BA$ OR A$=CHR$(127)THEN 4805 ELSE IF A$=ESC$THEN CM=FD:CLS:GOTO 20095
4785 IF A$=CR$AND LF THEN PRINT#3,LF$;
4790 IF A$<>TA$ THEN 4800
4795 WEND
4797 A$=INPUT$(1,3):IF A$=BK2$ OR A$=BA$ THEN 4805 ELSE IF A$=CR$AND LF THEN PRINT#3,LF$;
4800 CR=1:GOSUB 1400:GOTO 4775
4805 IF POS(0)>1 THEN PRINT BK1$;:PRINT#3,BK$;
4810 GOTO 4775
4900 GOSUB 1400:A$="RBBS-PC Version "+VA$:GOSUB 1400:A$="You are caller # ->"+STR$(CJ):GOSUB 1400:A$="# of Active msgs ->"+STR$(LC):GOSUB 1400:IF LO>0 THEN A$="Last msg you read ->"+STR$(LO):GOSUB 1400
4950 A$="Next msg # will be->"+STR$(LE+1):GOTO 2210
5000 FOR Z=1 TO LEN(Z$):MID$(Z$,Z,1)=CHR$(ASC(MID$(Z$,Z,1))+32*(ASC(MID$(Z$,Z,1))>96)):NEXT:RETURN
5100 Z1$=TA$:FOR Z=1 TO LEN(Z$):IF ASC(MID$(Z$,Z,1))<65 OR ASC(MID$(Z$,Z,1))>90 THEN 5105 ELSE Z1$=Z1$+MID$(Z$,Z,1)
5105 NEXT:Z$=Z1$:RETURN
5110 A$="Enter a new password":GOSUB 45010:IF Q=0 THEN RETURN ELSE IF LEN(B$(1))>15 THEN 5110 ELSE Z$=B$(1):GOSUB 5000
5120 A$="Reenter new password":GOSUB 45010:IF Q=0 THEN RETURN ELSE SWAP Z$,B$(1):GOSUB 5000:IF Z$<>B$(1)THEN A$=P$+"s don't match.":GOTO 2210
5125 IF MP AND NCH>MP AND NOT SH THEN A$="No changes permitted" ELSE Z=1:GOSUB 5140:IF NOT FG THEN 5130 ELSE A$="Temporary change":PW$=TPW$:TV!=TJA*60:UG=TFA:GOSUB 41070:GOSUB 41050:IF UG<SE THEN SH=0 ELSE SH=-1
5131 Z$=SPACE$(5)+"Password changed to "+B$(1):GOSUB 5538:RETURN
5140 FG=0:CLOSE 2:OPEN PD$ FOR INPUT AS 2:Z$=Z$+SPACE$(15-LEN(Z$))
5150 IF EOF(2) THEN 5160 ELSE INPUT #2,TPW$,TFA,TJA:IF LEN(TPW$)>15 THEN 5150 ELSE TPW$=TPW$+SPACE$(15-LEN(TPW$)):IF Z$<>TPW$ THEN 5150 ELSE IF Z THEN FG=-1 ELSE IF UG=TFA THEN FG=-1 ELSE 5150
5160 RETURN
5200 IF Q>1 THEN 5230
5220 A$="Page length is"+STR$(PL)+". Enter new length (0=continuous)":GOSUB 1500:IF Q=0 THEN 1200
5230 A=VAL(B$(Q)):IF A<0 OR A>255 THEN 5220 ELSE PL=A:GOTO 1200
5500 IF BPS=-3 THEN A$="Sorry, 1200 baud connect cannot change speed.":GOTO 2210
5507 A$=T1$:GOSUB 1500:IF NOT YES THEN RETURN
5510 A$=T1$+" and enter <c/r> until I respond...":GOSUB 1400:FOR I=1 TO 3:GOSUB 50510:NEXT:C=0:SWAP Q,NE:GOSUB 1654:SWAP Q,NE
5530 C=C+1:GOSUB 42000:IF C=20 THEN 10595 ELSE GOSUB 50500
5535 IF NOT EOF(3)THEN IF ASC(INPUT$(1,3))=13 THEN 5540
5537 GOTO 5530
5538 GOSUB 56000:LSET CL$=Z$:CDX=CDX+1:PUT 2,CDX:IF LH THEN LPRINT Z$
7040 IF EOF(2)OR(INP(MSR)<128 AND NOT LJ)THEN 7200
7045 IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN 7200 ELSE Q=0
7050 LINE INPUT #2,A$:A$=A$+NUL$:IF LEN(A$)<2 THEN 7100
7057 IF INSTR(A$,"--") THEN 7100
7060 A=INSTR(9,MID$(A$,1,32),"/"):IF A>0 THEN 7070
7065 A=INSTR(9,MID$(A$,1,32),"-"):IF A=0 THEN 7100
7070 A=A-2:IF A>0 THEN PAD$=FNDC$(MID$(A$,A,8)) ELSE Q=Q-1:GOTO 7040
7075 IF MID$(PAD$,3,1)=TB$ THEN MID$(PAD$,3,1)="0
7085 IF MID$(PAD$,5,1)=TB$ THEN MID$(PAD$,5,1)="0
7089 IF PAD$=>LM$ AND NJ THEN NJ=0:CLOSE 2:OPEN "I",2,F$:Q=0:GOTO 7040
7090 IF PAD$=>LM$ THEN 7100 ELSE Q=Q-1:GOTO 7040
7100 IF NJ THEN 7040
7101 GOSUB 1400:IF NOT RET THEN 7040 ELSE 7200
7200 A$=TA$:Q=0:CLOSE 2:IF NOT LJ THEN GOSUB 42000
7210 RETURN
8000 GOSUB 1400:IF RET THEN RETURN
8020 IF MID$(R$,37,3)=TP$ THEN T$=TP$:GOTO 8040
8030 Z=22:Z$=MID$(R$,37,Z):GOSUB 8100:T$=Z$
8040 Z=25:Z$=MID$(R$,76,Z):GOSUB 8100:SUB$=Z$:IF PF THEN SUB$=SJ$
8050 Z=31:Z$=MID$(R$,6,Z):GOSUB 8100:FI$=Z$:A$="Msg # "+LEFT$(R$,5)+" Dated "+MID$(R$,68,8)+TB$+MID$(R$,59,8):GOSUB 1400:IF NOT RET THEN A$="From: "+FI$
8070 GOSUB 1400:IF NOT RET THEN A$=" To: "+T$:GOSUB 1400:A$=" Re: "+SUB$:GOSUB 1400
8080 RETURN
8100 Z=LEN(Z$):FOR I=1 TO LEN(Z$):IF MID$(Z$,Z,1)<>TB$ THEN 8110
8105 Z=Z-1:NEXT
8110 Z$=MID$(Z$,1,Z):RETURN
9000 GOSUB 1400:Q=4:FOR X=2 TO VAL(MID$(R$,118)):CR=1:GOSUB 1400:EOL=0:J=1:GET 1
9050 B=INSTR(J,R$,CHR$(227)):IF RET THEN RETURN
9060 C=B-J:IF C<1 THEN C=128:EOL=-1
9070 A$=MID$(R$,J,C):IF EOL THEN 9090
9075 GOSUB 1400:J=B+1:IF PL THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:Q=0:IF NO THEN RETURN
9085 GOTO 9050
9090 NEXT:A$=TA$:RETURN
9100 GOSUB 1400:H=VAL(LEFT$(TI$,2)):M=VAL(MID$(TI$,4,2)):S=VAL(MID$(TI$,7,2)):HH=VAL(LEFT$(TIME$,2)):MM=VAL(MID$(TIME$,4,2)):SS=VAL(MID$(TIME$,7,2)):IF S=<SS THEN SSS=SS-S ELSE SSS=60-(S-SS):M=M+1
9150 IF M=<MM THEN MMM=MM-M ELSE MMM=60-(M-MM):H=H+1
9160 IF H=<HH THEN HHH=HH-H ELSE HHH=24-(H-HH)
9170 GOSUB 482:A$="It is now "+TIM$+".":GOSUB 1400:A$="You have been on for":CR=1:GOSUB 1400:IF HHH>0 THEN A$=STR$(HHH)+" Hours":CR=1:GOSUB 1400
9200 A$=STR$(MMM)+" Min. and"+STR$(SSS)+" Sec.":GOTO 2210
9300 NK=NOT NK:A$="<Nulls> ":IF NK THEN NUL$=CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0):A$=A$+"on" ELSE NUL$="":A$=A$+"off"
9320 GOTO 2210
9400 CLOSE 2:OPEN "R",2,UF$,128:FIELD 2,31 AS N$,15 AS PW$,2 AS SL$,14 AS OP$,24 AS CS$,19 AS MA$,14 AS TD$,3 AS LND$,2 AS UDL$,2 AS UUL$,2 AS ET$:RETURN
9500 AVA=NOT AVA:IF PRT THEN GOSUB 49000
9530 GET 1,1:MID$(R$,9,2)=STR$(AVA):PUT 1,1:RETURN
9710 NH=0:GOSUB 1400:A$="Bulletin # <1 through"+STR$(BC)+", L)ist or C/R to end>":GOSUB 1500:IF Q=0 THEN RETURN
9711 Z$=B$(1):GOSUB 5000:FF=INSTR("L123456",Z$):IF FF=0 THEN 9710
9745 F$=BUL$(FF-1):GOSUB 1790:GOTO 9710
10070 F$=CG$:GOSUB 6000:RETURN
10090 A$=CR$+"List - <U>sers, <R>ecent callers, C/R to return":CR=2:GOSUB 1500:IF Q=0 THEN RETURN ELSE Z$=B$(1):GOSUB 5000:ON INSTR("UR",Z$)+1 GOTO 10090,10096,10100
10096 GOSUB 9400:STI=-1:Q=0:FOR I=1 TO (INT(LOF(2)/128)):GET 2,I:A$=LEFT$(N$,20)+CS$+MA$+TD$:GOSUB 1400:IF RET THEN RETURN
10098 IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN RETURN ELSE Q=0
10099 NEXT:STI=0:RETURN
10100 F$=CF$:GOSUB 57000:RETURN
10110 A$="Pack MESSAGES file":GOSUB 1500:IF NO THEN 20095
10112 OK=0:NAME MN$ AS MN$
10113 IF NOT OK THEN 10120
10115 KILL MN$
10120 CLOSE 1,2:NAME MES$ AS MN$:Q=0:OPEN "R",1,MN$:GOSUB 170:OPEN "R",2,MES$:FIELD 2,128 AS RR$:GET 1:GOTO 10240
10150 GET 1
10160 IF INSTR(R$,CHR$(225)) THEN 10220
10170 IF INSTR(R$,CHR$(227)) THEN 10240
10180 IF INSTR(R$,CHR$(226)) THEN 10250
10185 IF NOT EOF(1)THEN 10150
10190 GOSUB 1400:A$="# of Msgs Purged :"+STR$(Q):GOSUB 1400:A$="# of Bytes Purged:"+STR$(CSNG(LOC(1)*128)-CSNG(LOC(2)*128)):GOSUB 1400
10280 A$="Renumber starting with OLD msg #":GOSUB 1500:MM=VAL(B$(1)):IF Q=0 OR MM<1 THEN 20095
10300 A$="Start with NEW #":GOSUB 1500:Y=VAL(B$(1)):IF Q=0 THEN 10280
10310 FOR Q=1 TO LC:IF M(Q,2)=MM THEN R=M(Q,1):GOTO 10340
10330 NEXT:A$="No Msg #"+STR$(MM):GOTO 2220
10340 GET 1,R:RR=VAL(MID$(R$,118)):IF RR<1 THEN GET 1,1:Y=LC:LSET R$=STR$(Y+1)+SPACE$(8-LEN(STR$(Y)))+MID$(R$,9):PUT 1,1:GOTO 10210
10360 LSET R$=STR$(Y)+SPACE$(5-LEN(STR$(Y)))+MID$(R$,6):IF MID$(R$,101,6)=TU$ THEN MID$(R$,1,1)="*"
10370 PUT 1,LOC(1):Y=Y+1:R=R+RR:GOTO 10340
10390 A$="Msg # to Recover":GOSUB 1500:MM=VAL(B$(1)):IF MM<1 THEN 1450
10410 R=2:GOSUB 1400
10420 GET 1,R:RR=VAL(MID$(R$,118)):IF RR<1 THEN A$="No Msg #"+STR$(MM):GOTO 2210
10440 IF VAL(MID$(R$,2,4))<>MM THEN R=R+RR:GOTO 10420
10450 IF INSTR(R$,CHR$(226))<>0 THEN LSET R$=LEFT$(R$,115)+CHR$(225)+MID$(R$,117):PUT 1,LOC(1):A$="Msg #"+STR$(MM)+" is restored.":GOSUB 1400:GOTO 10210
10480 A$="Msg #"+STR$(MM)+" is not Dead.":GOTO 2210
10490 R=2
10510 GET 1,R:RR=VAL(MID$(R$,118)):IF RR<1 THEN RETURN
10520 A$=R$:GOSUB 1400:R=R+RR:GOTO 10510
10530 A$="Delete all comments":GOSUB 1500:IF YES THEN CLOSE 2:OPEN "O",2,CG$:CLOSE 2
10550 GOTO 20095
10555 IF KG THEN RETURN
10560 GOSUB 9100:IF HHH>0 THEN CLOSE 2:OPEN "A",2,LB$:WRITE#2,NAM$,D$,HHH,MMM:CLOSE 2
10590 A$="Thanks for calling, "+FE$+"!":GOSUB 1400
10595 IF CINT(UIX#)<1 THEN CLS:GOTO 13540
10600 SH=0:GOSUB 9400:GET 2,UIX#:LSET OP$=MKI$(TGA)+MKI$(LO)+MKI$(LF)+MKI$(MQ)+MKI$(BA)+MKI$(XPR)+CHR$(PL)+STRING$(1,0):IF LD THEN LSET LND$=FNCD$(D$)
10620 Z$=SPACE$(5)+LG$(I):GOSUB 5538:Z$=NAM$+" on at "+D$+", "+TIM$+"***** LOGON DENIED *****"+", "+BF$+PE$:NG$=Z$+SPACE$(128-LEN(Z$)):IF LH THEN LPRINT Z$
10698 GOSUB 1400:A$="You are denied access.":CR=2:GOSUB 1400:GOTO 13540
10700 GOSUB 1400:A$="Enter filespec(s) as d:filespec.ext ":GOSUB 1500:GOSUB 5000:IF B$(1)=TA$ THEN 1200 ELSE Z$=B$(1)
10715 A$="Reading directory...":GOSUB 1400:G=0
10720 CLS:FILES B$(J):LP=CSRLIN:IF CE THEN W=13:P=1 ELSE W=18:P=2
10725 LOCATE P,1,1:FOR I=P TO LP:FOR B=1 TO 66 STEP W:G=G+1:B$(G)=TA$:FOR JJ=0 TO 11:H=SCREEN(I,(B+JJ)):B$(G)=B$(G)+CHR$(H):NEXT:IF INSTR(B$(G),".")>0 THEN 10840
10733 IF LN AND OC$="YES" AND B$(G) = DIR$+SPACE$(12-LEN(DIR$)) THEN G=G-1:GOTO 10840
10737 IF LN AND OD$="YES" AND B$(G) = UB$+SPACE$(12-LEN(UB$)) THEN G=G-1:GOTO 10840
10740 IF LEFT$(B$(G),1)=TB$ THEN G=G-1:GOTO 10845
10840 NEXT:NEXT
10845 IF LN THEN RETURN
10850 CLS:GOSUB 1400:A$="Sorting filenames...":GOSUB 1400:FOR X=1 TO G-1:FOR Y=X+1 TO G:IF B$(Y)<B$(X)THEN SWAP B$(X),B$(Y)
10880 NEXT:A$=".":CR=1:GOSUB 1400:NEXT:GOSUB 1400:A$="Filespecs":GOSUB 1400:FOR I=1 TO G:FOR MMM=1 TO LEN(B$(I)):L$=MID$(B$(I),MMM,1):IF ASC(L$)<>32 THEN W$=W$+L$
10920 NEXT:B$(I)=W$:A$=B$(I):GOSUB 1400:W$=TA$:NEXT:FOR I=1 TO 128:B$(I)=TA$:NEXT:GOTO 1200
10925 MS=-1:GOSUB 3100:MS=0:RETURN
10930 IF DA<2 THEN A$="Unsupported by current level of DOS.":GOTO 1200
10932 IF LJ THEN A$="Only for remote SYSOP's":GOTO 1200
10934 CLOSE 2:OPEN "O",2,CH$:PRINT#2,"ECHO OFF":PRINT#2,"CTTY "+CP$:PRINT#2,"ECHO RBBS-PC "+VA$:PRINT#2,"ECHO SYSOP in Remote Console Mode at "+TIME$+TH$+DATE$:PRINT#2,"COMMAND ":PRINT#2,"CTTY CON":PRINT#2,RC$:GOSUB 56000
10950 GOSUB 480:LSET CL$=" Exited to DOS 2.0 at "+TIM$:IF LH THEN LPRINT CL$
10960 GOTO 10992
10970 IF NOT BE THEN A$="Windows require N,8,1 for proper operation.":GOTO 2220
10972 IF NOT WA THEN A$="All RBBS-PC windows are closed.":GOSUB 1400:GOTO 1200
10974 F$=MJ$:GOSUB 43030:GOSUB 45000:A$="Which window would you like opened? (C/R to end)":GOSUB 1500:Z$=B$(1):GOSUB 5000:IF B$(1)=""THEN 1200
10976 CLOSE 2:OPEN "I",2,F$
10978 IF EOF(2)THEN A$="There is no "+Z$+" window!.":GOSUB 1400:GOTO 1200
10980 IF INP(MSR)<128 AND NOT LJ THEN 10595
10982 LINE INPUT#2,A$:IF LEN(A$)<LEN(Z$)GOTO 10978
10984 IF INSTR(A$,Z$)THEN 10985 ELSE 10978
10985 Z$=Z$+".BAT
10986 NAME Z$ AS Z$
10987 CLOSE 2:OPEN "O",2,CH$:PRINT#2,Z$:PRINT#2,RC$:CLOSE 2:A$="RBBS-PC "+Z$+" window opened at "+TIME$+" on "+DATE$:GOSUB 1400:WI=-1:GOSUB 56000:LSET CL$=" "+LEFT$(Z$,LEN(Z$)-4)+" window opened!":IF LH THEN LPRINT CL$
10992 CLOSE 3:OUT MCR,INP(MCR)OR 1:IF WI THEN IF MC THEN DEF SEG=MC:GOSUB 60400:POKE(&H64+PEEK(&H58)+256*PEEK(&H59)+&HC),ASC(RIGHT$(CP$,1))-48:AX=&H700+MTERM:GOSUB 60510:GOSUB 60430
10996 CDX=CDX+1:PUT 2,CDX:GOSUB 43050:SYSTEM
11000 A$="A)dd, L)ist, P)rint, or M)odify users (C/R to quit)":GOSUB 1500:IF Q=0 THEN 20095 ELSE QQ=0:Z$=LEFT$(B$(1),1):GOSUB 5000:IF Z$="A" THEN 12300 ELSE IF Z$="M"THEN STI=0 ELSE IF Z$="P"THEN QQ=-1
11005 GOSUB 9400:Z=1
11010 XY#=LOF(2)/128:FOR J=Z TO XY#:GET 2,J
11015 IF ASC(N$)=0 THEN 11300 ELSE OF=CVI(SL$):A$=STR$(LOC(2))+":"+N$+" SECURITY "+STR$(OF)+TB$:IF OF<MO THEN A$=A$+" <Locked out>":GOTO 11100
11020 A$=A$+"Pw="+PW$+" Times on="+STR$(CVI(MID$(OP$,1,2)))
12000 A$="Pack USERS file":GOSUB 1500:IF NO THEN 20095
12005 OK=0:UI$=UF$+".BAK":NOW=VAL(LEFT$(DATE$,2)):NAME UI$ AS UI$
12010 IF NOT OK THEN 12030
12020 KILL UI$
12030 NAME UF$ AS UI$:Q=0:CLOSE 1:OPEN "R",1,UI$,128:FIELD 1,31 AS O.N$,15 AS OG$,2 AS OH$,14 AS OI$,24 AS OJ$,19 AS OL$,14 AS OM$,3 AS OO$,2 AS OQ$,2 AS OS$,2 AS OT$:GOSUB 9400:A!=LOF(1)/128:FOR J=1 TO A!:GET 1,J:IF ASC(O.N$)=0 THEN 12220
12080 OF=CVI(OH$):OU=VAL(LEFT$(OM$,2)):LQ=NOW-OU:IF LQ<0 THEN LQ=LQ+12
20240 CLOSE 2:OPEN FB$ FOR INPUT AS 2:N$=Z$:GOSUB 20282:D1$=DR$:P1$=PRE$:S1$=EXT$
20242 IF EOF(2) THEN 20247 ELSE INPUT #2,N$,FJ,FPW$:GOSUB 20282
20243 IF DR$<>"" AND DR$<>D1$ THEN 20242 ELSE A$=P1$:Z$=PRE$:GOSUB 20285:IF OK THEN 20242 ELSE A$=S1$:Z$=EXT$:GOSUB 20285:IF OK THEN 20242 ELSE 20244
20244 IF UG<FJ THEN 20245 ELSE IF FPW$=TA$ THEN 20247 ELSE Z$=FPW$:GOSUB 5000:FPW$=Z$:IF FPW$=PW$ THEN 20247 ELSE A$="Enter PASSWORD for downloading "+F$:GOSUB 1500:Z$=B$(1):GOSUB 5000:IF Z$=FPW$ THEN 20247
20245 VD$="DownLoad "+F$:GOSUB 1380:RETURN 20015
20247 BL=0:EXT$=RIGHT$(F$,4):IF INSTR(".EXE.COM.OBJ.WKS",EXT$) OR MID$(EXT$,3,1)="Q" OR (BD AND EXT$=".BAS") THEN A$="This is a binary file and requires XMODEM transfer":GOSUB 1400:BL=-1
20248 A$="Download"+FU$:CR=1:GOSUB 1500:IF Q=0 THEN 20248 ELSE Z$=B$(1):FT$=Z$:GOSUB 5000
20260 ON INSTR("XAQ",Z$) GOTO 20290,20340,20289:GOTO 20248
20282 Z$=N$:GOSUB 5000:IF MID$(Z$,2,1)=":" THEN DR$=LEFT$(Z$,1):S=3 ELSE DR$="":S=1
20286 K=K+1:IF K>L THEN 20288 ELSE B$=MID$(Z$,K,1):IF B$="*" THEN 20289
20287 IF B$<>"?" AND MID$(A$,K,1)<>B$ THEN OK=-1:GOTO 20289 ELSE 20286
20288 IF L<LEN(Z$) AND MID$(Z$,L+1,1)<>"*" THEN OK=-1
20289 RETURN
20290 CLOSE 2:OPEN "R",2,F$,128:TLA=165:GOSUB 20750:IF NOT BE THEN GOSUB 1400:A$=T3$+".":GOSUB 1400:CR=2:GOSUB 50510
20310 A$="Ready to send. Enter <Ctrl X> to abort transfer...":GOSUB 1400:GOSUB 50510:GOSUB 21300:CR=2:A$=TA$:GOTO 20390
20340 IF BL THEN 20235 ELSE CLOSE 2:OPEN "I",2,F$:GOSUB 20750:A$=TJ$:MID$(A$,9,1)="X":CR=2:GOSUB 1400:A$="Ready to send. Open download file. Enter <CR> to start":CR=1:GOSUB 1500
20380 ABT$=CAN$:STI=-1:GOSUB 6030:ABT$=CHR$(11):CR=2:IF RET THEN A$="<*>Download aborted<*>":SN=FD:GOTO 20390
20381 A$=CHR$(26):GOSUB 1400:IF NOT LJ THEN FOR X=1 TO 5:PRINT#3,BA$:GOSUB 50510:NEXT
20385 A$="<*>End of file<*>":SN=TBA
20390 GOSUB 1400:GOSUB 50600:RETURN
20400 IF Q=2 THEN B$(1)=B$(2):GOTO 20430
20420 CR=1:A$=F8$+"upload":GOSUB 1500:IF Q=0 THEN RETURN
20430 Z$=B$(1):VD$="Upload ":FOR X=1 TO LEN(FA$):GOSUB 20741:ON A GOTO 20440,20420
20440 OK=0:NAME F$ AS F$
20450 IF NOT OK THEN 20460
20455 NEXT
20460 IF NOT OK AND UG>=UPS THEN A$="File exists, overwrite it":GOSUB 1500:IF YES THEN OK=-1:GOTO 20475
20465 F$=RIGHT$(FA$,1)+":"+Z$:IF NOT OK THEN CLOSE 2:A$="File <"+Z$+"> exists! Use a unique name.":CR=2:GOSUB 1400:GOTO 20420
20475 Z$=LEFT$(F$,2)+UB$:CR=2:GOSUB 1400:GOSUB 52000:A$="Upload disk has"+AD$:CR=2:GOSUB 1400:FH$="(U) "+F$:GOSUB 950
20480 A$="Upload"+FU$:CR=1:GOSUB 1500:IF Q=0 THEN 20480 ELSE Z$=B$(1):FT$=Z$:GOSUB 5000
20500 ON INSTR("XAQ",Z$) GOTO 20530,20560,20735:GOTO 20480
20530 IF NOT BE THEN GOSUB 1400:A$=T3$+", then start XMODEM.":CR=2:GOSUB 1400
20540 A$="Ready to receive. Enter <Ctrl-X> to abort transfer...":GOSUB 1400:GOSUB 50500:OK=-1:GOSUB 20860:X#=0:IF OK THEN 20700 ELSE 20730
20560 A$="NOTE--transfer MUST Terminate with a <Ctrl-K>.":CR=2:GOSUB 1400:A$="Ready to receive ...":GOSUB 1400:OK=0:X=FD:CLOSE 2:OPEN "O",2,F$:IF PRT THEN PRINT"<Esc> from SYSOP will abort.
20600 WHILE NOT EOF(3):GOSUB 42000:IF LOF(3)<128 THEN PRINT#3,XA$;:X=TBA
20710 A$="Enter 40 char. description of "+F$+"(begin with / if for SYSOP only).":GOSUB 1400:A$=" |----+---1+0---+---2+0---+---3+0---+---4+0":GOSUB 1400:GOSUB 1500:IF LEN(B$(1))>40 THEN 20710
20720 IF LEFT$(B$(1),1)="/"THEN 20725 ELSE PRINT#2,USING"\ \######## & &";F$;X#;LEFT$(DATE$,6)+RIGHT$(DATE$,2);B$(1)
20725 CLOSE 2:Y$=" >> uploaded << ":ULD=ULD+1:GOSUB 50610:RETURN
20730 A$="Upload aborted.":GOSUB 1400
20735 CLOSE 2:KILL F$
20737 RETURN
20741 A=1:GOSUB 5000:F$=MID$(FA$,X,1)+":"+Z$:IF INSTR(F$,"?") OR INSTR(F$,"*") OR INSTR(F$,TB$) OR INSTR(F$,CA$) OR INSTR(3,F$,":") OR MID$(F$,LEN(F$),1)= "." THEN A=2:RETURN
20742 IF LEN(Z$)=>3 THEN IF INSTR("COM1COM2LPT1LPT2LPT3PRNCONAUX",Z$) THEN NI=VB:VD$=VD$+Z$:GOSUB 1380
20743 RETURN
20745 A$=XA$+"SYSOP aborted upload. Stop transmission. Enter <Ctrl-K> to continue":GOTO 20675
21503 CK=0:FOR I=1 TO 128:CK=CK+ASC(MID$(X$,I,1)):NEXT:CK=(CK AND 255)
21504 IF CK>256 THEN CK=CK-256:GOTO 21504
21510 PRINT#3,CHR$(CK);:GOSUB 21280:GOTO 21410
21530 PRINT#3,EOT$;:FOR X=1 TO 100:GOSUB 20810:IF Y$=ACK$THEN 21550 ELSE Y$=INKEY$:IF Y$=ESC$ THEN 21540
21535 NEXT:GOTO 21230
21540 IF PRT THEN PRINT TT$
21545 Y$=CAN$:PRINT#3,CAN$;CAN$;:GOTO 21250
21550 IF PRT THEN PRINT"Transmission Ended.
21555 SN=TBA:GOTO 21250
21560 SN=FD:IF PRT THEN PRINT"Receiver aborted transmission":GOTO 21250 ELSE RETURN
30000 A$=CHR$(12)+"SYSOP is active....Now in CHAT mode...":CR=2:GOSUB 1400:GOSUB 50500:A$="Hello, this is "+NA$+TB$+NB$+". Sorry to break in but....":CR=2:GOSUB 1400:GOSUB 4770:RETURN
31000 ON ERROR GOTO 0:CLS:IF MC THEN GOSUB 60400
31010 SYSTEM
32000 IF MC THEN GOSUB 60400
32010 CLS:CLEAR:END
33000 LH=NOT LH:IF PRT THEN GOSUB 49000
33010 GET 1,1:MID$(R$,56,2)=STR$(LH):PUT 1,1:GOTO 43080
33040 AC=NOT AC:IF PRT THEN GOSUB 49000
33050 GET 1,1:MID$(R$,52,2)=STR$(AC):PUT 1,1:GOTO 43080
42000 IF LJ THEN RETURN:IF CTI!>TI!THEN CTI!=TI!+(10*60)
42010 IF INP(MSR)<128 THEN 10595
42020 RETURN
43000 IF NOT GA THEN A$=TZ$:GOTO 43020
43005 IF NOT BE THEN A$=TZ$+" in 7 bit mode":GOTO 43020
43010 GR=NOT GR:A$="Graphics mode ":IF GR THEN A$=A$+"on" ELSE A$=A$+"off
43020 GOTO 2210
43030 OK=0:IF (BE AND GA AND GR AND LEN(F$)<10) THEN GF$=F$+"G":NAME GF$ AS GF$
43031 IF OK THEN F$=GF$
43035 RETURN
43040 IF LEFT$(Z$,LEN(A$))=A$ THEN RETURN 20245 ELSE RETURN
43050 FIELD 2,55 AS CL$,3 AS HHH$,3 AS MMM$, 3 AS SSS$:LSET CL$=MID$(NG$,65,55):LSET HHH$=STR$(HHH):LSET MMM$=STR$(MMM):LSET SSS$=STR$(SSS):CDX=CDX+1:PUT 2,CDX:FIELD 2,64 AS CL$:LSET CL$=LEFT$(NG$,64):CDX=CDX+1:PUT 2,CDX
43060 IF FE$=NA$ AND LK$=NB$ THEN SH=-1 ELSE SH=0
43070 GET 1,1:MID$(R$,58,2)=STR$(WI):MID$(R$,60,2)=STR$(BE):MID$(R$,62,2)=STR$(BPS):MID$(R$,64,2)=STR$(UC):MID$(R$,66,5)=" ":KG=-1:GOSUB 41000:MID$(R$,66,5)=STR$(TR!):MID$(R$,71,2)=STR$(GR):MID$(R$,73,2)=STR$(SH)
43080 PUT 1,1:RETURN
44000 GET 1,1:WI=VAL(MID$(R$,58,2)):BE=VAL(MID$(R$,60,2)):BPS=VAL(MID$(R$,62,2)):UC=VAL(MID$(R$,64,2)):TV!=VAL(MID$(R$,66,5)):GR=VAL(MID$(R$,71,2)):SH=VAL(MID$(R$,73,2)):IF BPS=-3 THEN Q=&H60:GOSUB 1654
60540 'CALL CO(AX,BX):RETURN:' Required to be executable under the interperter but will cause errors if left executable and run through the BASIC compiler.
60550 CALL ABSOLUTE(AX,BX,CO):RETURN
62500 GOSUB 41000:KB=0:RE=0:IF NH THEN 4625
62501 IF UH THEN A$="More (Y),N,NS,RE,K" ELSE A$="More (Y),N,NS,RE
62502 GOSUB 1500:IF NO THEN 4650
62505 IF KB AND (UH OR SH) THEN IF UG>=MD(8) THEN GOSUB 62520:GOSUB 3950:GOSUB 62530:GOTO 4625 ELSE VD$="MainMenu R) Func 8":GOSUB 1380:GOTO 4625
62510 IF NOT RE THEN 4625
62515 IF UG<MD(3) THEN VD$="MainMenu R) Func 3":GOSUB 1380:GOTO 4625 ELSE IF LEFT$(SUB$,3)<>"(R)" THEN SUB$="(R)"+LEFT$(SUB$,22)
64000 LF=-1:TA$="":TB$=" ":TC$=" ":T2$=" ":TE$=" ":TF$=" copied...":TG$=" is available between":TH$=" on ":TI1$=" there are no bulletins today.":TJ$="* <Ctrl K> to abort. <Ctrl S> to suspend *":TK$="+++ Error
64010 TM$=" Char. Max.":TN$=":300,E,7,1,RS,CD,DS":TW$="<Esc> by SYSOP causes early termination. <<<":TP$="All":TQ$="Disk full--restoring ":TZ$="Graphics unavailable":T1$="Change to 450 baud":T5$=":300,N,8,1,RS,CD,DS"
64020 T3$="Switching to N,8,1 for binary transfer. You do the same":TS$="Temporary SYSOP Privileges ":TT$="Transfer aborted by <Esc> key":TU$="^READ^":E1$=" Error in #":F8$="Enter full filename to ":FU$=" type <X>modem, <A>scii, <Q>uit
64025 LG$(1)="Registration Check Failed":LG$(2)="Sysop name attempted":LG$(3)="Locked out attempt":LG$(4)="Password Attempt Failed":P$="Password":VB$="RBBS-PC VERSION ":K1$="<K>ill unneeded ones.":LG$(5)="Automatic Lockout completed":RETURN